import java.util.HashMap;
//四数相加，四个不同的数组，分别取一个元素，使得总和为0的组合
public class fourNumberSum {
    public int sum(int[] a,int[] b,int[] c,int[] d){
        HashMap<Integer,Integer> map = new HashMap<>();//键：两数之和，值：出现次数

        for (int A:a){
            for(int B:b){
                int sum = A+B;
                if(map.get(sum)==null){
                    map.put(sum,1);
                }else {
                    map.put(sum,map.get(sum).intValue()+1);
                }
            }
        }

        int count = 0;//记录有多少和为零的组合
        for (int C:c){
            for(int D:d){
                int sum = C+D;
                if(map.get(-sum)!=null){//如果所得到的相反数
                    count+=map.get(-sum).intValue();//c和d有一次，如果a和d有两次，那肯定就是得有2次组合，分别组合一次
                }
            }
        }
        return count;
    }
    public static void main(String[] args) {
        var main = new fourNumberSum();
        int[] A = {1, 2};
        int[] B = {-2,-1};
        int[] C = {-1, 2};
        int[] D = {0, 2};
        int res = main.sum(A,B,C,D);
        System.out.println(res);
    }
}
